package cn.taskservice.redis.idempotent.annotation;

import cn.taskservice.redis.idempotent.service.IdempotentFallback;

import java.lang.annotation.*;

/**
 * 接口幂等性校验
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Idempotent {

    /** SpEL 表达式作为唯一 key */
    String key();

    /** Key 前缀（推荐填写微服务名，如 order-api） */
    String prefix() default "idempotent";

    /** 是否使用 Redis 集群 hashTag（加在 {} 内） */
    boolean useHashTag() default true;

    /** TTL 默认 5000ms，可自定义 */
    long expireMillis() default 5000;

    /** 降级处理类（默认无） */
    Class<? extends IdempotentFallback> fallback() default IdempotentFallback.class;
}
